查看原文
其他

精通Linux系列四:基本文件操作

拾叁 更AI 2023-10-21

点击关注公众号,AI,编程干货及时送达   

基本文件操作

ls列出目录中的文件。
cp复制文件。
mv重命名("移动")文件。
rm删除(“移除”)文件。
ln创建到文件的链接(替代名)。

在Linux系统上,你首先需要做的一件事就是操作文件:复制、重命名、删除等等。

ls

stdin  stdout  - 文件  -- 选项  --help  --version

ls [选项] [文件]

ls命令列出文件和目录的属性。你可以在当前目录下列出文件:

→ ls

在给定的目录中:

→ ls dir1 dir2 dir3

或者分别列出:

→ ls myfile myfile2 myfile3

最重要的选项是-a-l-d。默认情况下,ls隐藏以点开头的文件名,如侧栏[“点文件”]中解释的。-a选项显示所有文件:

→ ls
myfile   myfile2
→ ls -a
.hidden_file   myfile   myfile2

-l选项产生长列表:

→ ls -l myfile
-rw-r--r--  1 smith users  1168 Oct 28 2015 myfile

从左到右包括:文件的权限(-rw-r--r--)、硬链接的数量(1)、所有者(smith)、组(users)、大小(1168字节)、最后修改日期(Oct 28 2015)和名称。关于权限的更多信息,请参见[“文件保护”]。

-d选项列出关于目录本身的信息,而不是深入目录列出其文件:

→ ls -ld dir1
drwxr-xr-x  1 smith users  4096 Oct 29 2015 dir1

有用的选项

-a列出所有文件,包括以点开头的名称。
-l长列表,包括文件属性。添加-h选项(人类可读)以千字节、兆字节和千兆字节的形式打印文件大小,而不是字节。
-G在长列表中,不打印文件的组所有权。
-F用有意义的符号装饰某些文件名,表示它们的类型。对目录附加“/”,对可执行文件附加“*”,对符号链接附加“@”,对命名管道附加“
-S按大小排序文件。
-t按最后修改时间排序文件。
-r反转排序顺序。
-R如果列出目录,递归列出其内容。
-d如果列出目录,不列出其内容,只列出目录本身。

cp

stdin  stdout  - 文件  -- 选项  --help  --version

cp [选项] 文件 (文件 | 目录)

cp命令通常用来复制文件:

→ cp myfile anotherfile

或者将多个文件复制到一个目录(例如)mydir

→ cp myfile myfile2 myfile3 mydir

使用-a-r选项,你还可以递归复制目录。

有用的选项

-p复制不仅是文件的内容,还有文件的权限、时间戳,如果你有足够的权限,还可以复制所有者和组。(通常,副本将由你拥有,时间戳为现在,通过应用你的umask来设置权限。)
-a递归复制目录层次结构,保留所有文件属性和链接。
-r递归复制目录层次结构。此选项不保留文件的属性,如权限和时间戳。它保留符号链接。
-i交互模式。覆盖目标文件前询问。
-f强制复制。如果目标文件存在,则无条件覆盖。

mv

stdin  stdout  - 文件  -- 选项  --help  --version

mv [选项] 源文件 目标文件

mv(移动)命令可以重命名文件:

→ mv somefile yetanotherfile

或者将文件和目录移动到目标目录:

→ mv myfile myfile2 dir1 dir2 目标目录

有用的选项

-i交互模式。覆盖目标文件前询问。
-f强制移动。如果目标文件存在,无条件覆盖。

rm

stdin  stdout  - 文件  -- 选项  --help  --version

rm [选项] 文件 | 目录

rm(删除)命令可以删除文件:

→ rm deleteme deleteme2

或者递归删除目录:

→ rm -r dir1 dir2

有用的选项

-i | 交互模式。删除每个文件前询问。| | ```- | ---- | | -f | 强制删除,忽略任何错误或警告。| | -r | 递归删除目录及其内容。慎用此选项,尤其是如果与-f选项结合使用,因为它可能会擦除你的所有文件。|

ln

stdin  stdout  - 文件  -- 选项  --help  --version

ln [选项] 源文件 目标文件

链接是对另一个文件的引用,由ln命令创建。直观地说,链接为同一个文件提供了多个名字,使它可以在两个(或更多)位置同时存在。

有两种链接。符号链接(也称为symlink或软链接)通过其路径引用另一个文件,就像Windows的“快捷方式”或Mac OS X的“别名”。要创建符号链接,请使用-s选项:

→ ln -s myfile mysoftlink

如果你删除原始文件,现在的悬空链接将无效,指向一个不存在的文件路径。另一方面,硬链接只是磁盘上物理文件的第二个名字(在技术上,它指向同一个inode)。如果你删除原始文件,链接仍然有效。[图5]说明了区别。要创建硬链接,输入:

→ ln myfile myhardlink
image-20230725213556425

图5. 硬链接与符号链接

符号链接可以指向其他磁盘分区上的文件,因为它们只是对文件路径的引用;硬链接不能,因为一个磁盘上的inode在另一个磁盘上没有意义。符号链接也可以指向目录,而硬链接不能...除非你是超级用户并使用-d选项。

有用的选项

-s | 创建符号链接,而不是硬链接。| | ```- | ------ | | -i | 交互模式。覆盖目标文件前询问。| | -f | 强制链接。如果目标文件存在,无条件覆盖。| | -d | 创建到目录的硬链接(仅限超级用户)。|

要查找符号链接指向何处,运行以下任何一个命令,它们显示链接examplelink指向文件myfile

→ readlink examplelink
myfile
→ ls -l examplelink
lrwxrwxrwx 1 smith    ...    examplelink -> myfile

符号链接可以指向其他符号链接。要追踪整个链接链,找出它们最终指向何处,使用readlink -f

推荐阅读

··································

你好,我是拾叁,7年开发老司机、互联网两年外企5年。怼得过阿三老美,也被PR comments搞崩溃过。这些年我打过工,创过业,接过私活,也混过upwork。赚过钱也亏过钱。一路过来,给我最深的感受就是不管学什么,一定要不断学习。只要你能坚持下来,就很容易实现弯道超车!所以,不要问我现在干什么是否来得及。如果你还没什么方向,可以先关注我,这里会经常分享一些前沿资讯和编程知识,帮你积累弯道超车的资本。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存